package com.cwnu.sw.cys.core.common.handler;

import lombok.extern.slf4j.Slf4j;

/**
 * GlobalUncaughtExceptionHandler 类实现了 Thread.UncaughtExceptionHandler 接口，
 * 用于捕获并处理线程中未捕获的异常。
 * @author Administrator
 */
@Slf4j
public class GlobalUncaughtExceptionHandler implements Thread.UncaughtExceptionHandler {

    /**
     * 全局唯一的 GlobalUncaughtExceptionHandler 实例。
     */
    private static final GlobalUncaughtExceptionHandler INSTANCE = new GlobalUncaughtExceptionHandler();

    /**
     * 私有构造函数，确保单例模式。
     */
    private GlobalUncaughtExceptionHandler() {
    }

    /**
     * 捕获并处理线程中未捕获的异常。
     *
     * @param t 发生异常的线程。
     * @param e 未捕获的异常对象。
     */
    @Override
    public void uncaughtException(Thread t, Throwable e) {
        log.error("Exception in thread {} ", t.getName(), e);
    }

    /**
     * 获取 GlobalUncaughtExceptionHandler 的唯一实例。
     *
     * @return GlobalUncaughtExceptionHandler 的实例。
     */
    public static GlobalUncaughtExceptionHandler getInstance() {
        return INSTANCE;
    }

}
